package com.microtf.inscription.framework.service.storage;


import com.microtf.inscription.framework.vo.storage.StorageObjectVo;

import java.io.InputStream;
import java.net.URL;
import java.util.List;

/**
 * 应用存储
 *
 * @author guliuzhong
 */
public interface Oss {
    /**
     * 保存内容到存储
     *
     * @param data    存储的内容
     * @param objName 存储名称
     * @return 存储信息
     * @throws StorageException 失败信息
     */
    StorageObjectVo put(byte[] data, String objName) throws StorageException;

    /**
     * 保存指定url的内容到存储
     *
     * @param url     URL地址
     * @param objName 存储名称
     * @return 存储信息
     * @throws StorageException 失败信息
     */
    StorageObjectVo put(URL url, String objName) throws StorageException;

    /**
     * 将inputStream内容保存到存储
     *
     * @param inputStream inputStream
     * @param objName     存储名称
     * @return 存储信息
     * @throws StorageException 失败信息
     */
    StorageObjectVo put(InputStream inputStream, String objName) throws StorageException;

    /**
     * 删除存储
     *
     * @param objName 存储名称
     * @return 是否成功
     * @throws StorageException 失败信息
     */
    Boolean delete(String objName) throws StorageException;
    /**
     * 删除存储
     *
     * @param objName 存储名称
     * @return 是否成功
     */
    String getPrivateUrl(String objName);
    String getUrl(String objName);
    List<StorageObjectVo> getFileList(String prefix, int limit);
}
